﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="UIElementEventBinders.cs" company="JDML Consulting Ltd.">
//   Copyright 2011 Photon Project - http://photon.codeplex.com
// </copyright>
// <summary>
//   Defines the UIElementEventBinders type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Photon.Windows
{
    using System.Windows;
    using System.Windows.Input;
    using Photon;

    public static class UIElementEventBinders
    {
        public static readonly IEventBinder<UIElement, KeyEventHandler>
            KeyUp = EventBinder.Get<UIElement, KeyEventHandler>("KeyUp");

        public static readonly IEventBinder<UIElement, KeyEventHandler>
            KeyDown = EventBinder.Get<UIElement, KeyEventHandler>("KeyDown");

        public static readonly IEventBinder<UIElement, RoutedEventHandler>
            GotFocus = EventBinder.Get<UIElement, RoutedEventHandler>("GotFocus");

        public static readonly IEventBinder<UIElement, RoutedEventHandler>
            LostFocus = EventBinder.Get<UIElement, RoutedEventHandler>("LostFocus");

        public static readonly IEventBinder<UIElement, MouseEventHandler>
            MouseEnter = EventBinder.Get<UIElement, MouseEventHandler>("MouseEnter");

        public static readonly IEventBinder<UIElement, MouseEventHandler>
            MouseLeave = EventBinder.Get<UIElement, MouseEventHandler>("MouseLeave");

        public static readonly IEventBinder<UIElement, MouseButtonEventHandler>
            MouseLeftButtonDown = EventBinder.Get<UIElement, MouseButtonEventHandler>("MouseLeftButtonDown");

        public static readonly IEventBinder<UIElement, MouseButtonEventHandler>
            MouseLeftButtonUp = EventBinder.Get<UIElement, MouseButtonEventHandler>("MouseLeftButtonUp");

        public static readonly IEventBinder<UIElement, MouseEventHandler>
            MouseMove = EventBinder.Get<UIElement, MouseEventHandler>("MouseMove");

        public static readonly IEventBinder<UIElement, MouseButtonEventHandler>
            MouseRightButtonDown = EventBinder.Get<UIElement, MouseButtonEventHandler>("MouseRightButtonDown");

        public static readonly IEventBinder<UIElement, MouseButtonEventHandler>
            MouseRightButtonUp = EventBinder.Get<UIElement, MouseButtonEventHandler>("MouseRightButtonUp");

        public static readonly IEventBinder<UIElement, MouseWheelEventHandler>
            MouseWheel = EventBinder.Get<UIElement, MouseWheelEventHandler>("MouseWheel");

        public static readonly IEventBinder<UIElement, MouseEventHandler>
            LostMouseCapture = EventBinder.Get<UIElement, MouseEventHandler>("LostMouseCapture");

#if !WINDOWS_PHONE

        public static readonly IEventBinder<UIElement, DragEventHandler>
            DragEnter = EventBinder.Get<UIElement, DragEventHandler>("DragEnter");

        public static readonly IEventBinder<UIElement, DragEventHandler>
            DragLeave = EventBinder.Get<UIElement, DragEventHandler>("DragLeave");

        public static readonly IEventBinder<UIElement, DragEventHandler>
            DragOver = EventBinder.Get<UIElement, DragEventHandler>("DragOver");

        public static readonly IEventBinder<UIElement, DragEventHandler>
            Drop = EventBinder.Get<UIElement, DragEventHandler>("Drop");

#endif

        public static readonly IEventBinder<UIElement, TextCompositionEventHandler>
            TextInput = EventBinder.Get<UIElement, TextCompositionEventHandler>("TextInput");

        public static readonly IEventBinder<UIElement, TextCompositionEventHandler>
            TextInputStart = EventBinder.Get<UIElement, TextCompositionEventHandler>("TextInputStart");

        public static readonly IEventBinder<UIElement, TextCompositionEventHandler>
            TextInputUpdate = EventBinder.Get<UIElement, TextCompositionEventHandler>("TextInputUpdate");
    }
}